home *** CD-ROM | disk | FTP | other *** search
/ Shareware Extravaganza - Disc 1 / ShareWare Extravaganza 1 of 4 (The Ultimate Shareware Company).iso / grprogs / picutil.exe / ALTER.SRC / PIG.ASM < prev    next >
Assembly Source File  |  1986-07-14  |  4KB  |  112 lines

  1.  
  2. ;╔═════════════════════════════════════════════════════════════════════════════╗
  3. ;║ ░░░░░░░░░░░ PROGRAM = PIG.ASM ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ║
  4. ;╚═════════════════════════════════════════════════════════════════════════════╝
  5. ;┌─────────────────────────────────────────────────────────────────────────────┐
  6. ;│           RICOH IS30 SCANNER FORMAT                       │
  7. ;└─────────────────────────────────────────────────────────────────────────────┘
  8. CSEG           SEGMENT PUBLIC BYTE
  9.            ASSUME  CS:CSEG,DS:CSEG
  10.            INCLUDE PUBLICS.EQU
  11.            INCLUDE STRUC.EQU
  12.  
  13.            EXTRN   PIG_HEADER:WORD
  14.            EXTRN   PEL_SIZE:WORD
  15.            EXTRN   WIDTH_PIX:WORD
  16.            EXTRN   HEIGHT_PIX:WORD
  17.            EXTRN   WIDTH_BYTES:WORD
  18.            EXTRN   FLAGS:WORD
  19.  
  20.            EXTRN   ASC2BIN:NEAR
  21.            EXTRN   BIN2ASC:NEAR
  22.            EXTRN   READ_RAW:NEAR
  23. ;┌─────────────────────────────────────────────────────────────────────────────┐
  24. ;│           PIG   IN                                │
  25. ;└─────────────────────────────────────────────────────────────────────────────┘
  26.            PUBLIC  PIG_IN
  27. PIG_IN           PROC    NEAR
  28.  
  29.            PUSH    AX               ;SAVE REGISTERS
  30.            PUSH    SI               ;
  31.  
  32.            TEST   PIG_HEADER.PIG_MODE2,1
  33.            JNZ     PI050
  34.            MOV     PEL_SIZE,4
  35.            OR      FLAGS,GRAYSHADE
  36. PI050:
  37.            MOV     SI,OFFSET PIG_HEADER.PIG_WIDTH
  38.            MOV     AX,4               ;CONVERT 4 ASCII CHARACTERS
  39.            CALL    ASC2BIN               ;
  40.            MOV     WIDTH_BYTES,AX           ;SAVE AS BYTES
  41.  
  42.            SHL     AX,1               ;CONVERT TO PIXELS
  43.            TEST    FLAGS,GRAYSHADE           ;
  44.            JNZ     PI100               ;IF GRAYSCALE DIVIDE BY 4
  45.            SHL     AX,1               ;2
  46.            SHL     AX,1               ;4
  47. PI100:
  48.            MOV     WIDTH_PIX,AX           ;SAVE AS PIXELS
  49.  
  50.            MOV     SI,OFFSET PIG_HEADER.PIG_HEIGHT
  51.            MOV     AX,5               ;CONVERT 5 ASCII CHARACTERS
  52.            CALL    ASC2BIN               ;
  53.            MOV     HEIGHT_PIX,AX           ;SAVE AS PIXELS
  54. PI900:
  55.            CLC
  56.            POP     SI               ;RESTORE REGISTERS
  57.            POP     AX               ;
  58.            RET
  59.  
  60. PIG_IN           ENDP
  61. ;┌─────────────────────────────────────────────────────────────────────────────┐
  62. ;│           PIG   OUT                               │
  63. ;└─────────────────────────────────────────────────────────────────────────────┘
  64. ;┌─────────────────────────────────────────────────────────────────────────────┐
  65. ;│           SI = HEADER STRUCTURE                           │
  66. ;└─────────────────────────────────────────────────────────────────────────────┘
  67.            PUBLIC  PIG_OUT
  68. PIG_OUT        PROC    NEAR
  69.  
  70.            PUSH    AX               ;SAVE REGISTERS
  71.            PUSH    BX               ;
  72.            PUSH    DI               ;
  73.  
  74.            MOV     DI,OFFSET PIG_HEADER.PIG_WIDTH
  75.            MOV     BX,4               ;CONVERT 4 ASCII CHARACTERS
  76.            MOV     AX,WIDTH_BYTES           ;
  77.            CALL    BIN2ASC               ;
  78.  
  79.            MOV     DI,OFFSET PIG_HEADER.PIG_HEIGHT
  80.            MOV     BX,5               ;CONVERT 5 ASCII CHARACTERS
  81.            MOV     AX,HEIGHT_PIX           ;
  82.            CALL    BIN2ASC               ;
  83.                            ;
  84.            TEST    FLAGS,GRAYSHADE           ;
  85.            JNZ     PO100               ;
  86.            MOV     PIG_HEADER.PIG_MODE2,1  ;BINARY MODE
  87. PO100:
  88.            CLC
  89.            POP     DI               ;RESTORE REGISTERS
  90.            POP     BX               ;
  91.            POP     AX               ;
  92.  
  93.            RET
  94. PIG_OUT        ENDP
  95. ;┌─────────────────────────────────────────────────────────────────────────────┐
  96. ;│           PIG READ                                │
  97. ;└─────────────────────────────────────────────────────────────────────────────┘
  98.            PUBLIC  PIG_READ
  99. PIG_READ       PROC    NEAR
  100.  
  101.            CALL    READ_RAW            ;
  102.            JNC     PR100               ;
  103. ;           SUB     AX,4               ;STRIP OFF END OF FILE
  104.            STC
  105. PR100:
  106.            RET                   ;
  107. PIG_READ       ENDP
  108. ;╔═════════════════════════════════════════════════════════════════════════════╗
  109. ;╚═════════════════════════════════════════════════════════════════════════════╝
  110. CSEG           ENDS
  111.            END
  112.